/Accueil

Installer Alpine Linux sur un Raspberry PI 4

Ecrit le 1/11/2020

Objectifs

L'idée est d'avoir sur ce serveur un ensemble de services pour la maison, comme le partage de fichiers, site web de chanson. L'utilisation du Raspberry pi est essentiel ici car l'idée est d'économiser un abonnement chez Google Drive ou Microsoft ou autre service de partage de fichiers. Or le Raspberry pi ne consomme pas beaucoup, ainsi on peut le laisser allumer tout le temps. Par exemple le serveur nextcloud permet d'avoir un espace de stockage accessible depuis n'importe où. Il existe déjà 1 serveur qui tourne en permanence mais il consomme un peu plus, n'a qu'un disque (pas de RAID 1) et il est moins puissant.

Matériels

Le Raspberry Pi 4 8Go est un ordinateur puissant et peu gourmand en ressource.

Pour le stockage, je branche au Raspberry Pi un boitier externe USB supportant le RAID. Chez LDLC le boitier Icy Box IB-RD2243U31 est vendu aux alentours de 50 euros. J'ai acheté 2 disques SSD de 1To , ceux-ci sont utilisés en RAID 1, c'est-à-dire en mode miroir. Il faut choisir le RAID 1 en positionnant les switchs comme indiqué sur le boitier et en restant appuyé sur reset pendant 5 secondes.

Installation d'Alpine Linux

L'installation de cette distribution sur Raspberry Pi va se faire en 2 temps. En effet par défaut ce système est entièrement en RAM (système de fichier compris en lecture seule). A ce jour le script d'installation setup-alpine ne supporte pas l'installation sur disque (sys mode), cette procédure va se faire manuellement ici. L'idée est d'avoir la partition de boot sur la carte SD (1Go), la partition contenant le système de fichier racine "/" sur le SSD (64Go), et enfin une partition qui contiendra toutes les données utilisateurs (documents, musique, backup...), un peu plus de 900Go.

Préparation de la carte Micro SD

Si la carte correspond à /dev/mmcblk0 voici la procédure à suivre

  1. Executer fdisk
    fdisk /dev/mmcblk0
  2. Appuyer sur "n" pour créer la partition.
  3. Appuyer sur "p" pour la transformer en partition principale.
  4. Appuyer sur "1" pour lui donner un numéro dans la table de partition.
  5. Appuyer sur Entrée pour accepter le secteur de départ par défaut.
  6. Taper +taille pour choisir la taille. Dans mon cas j'ai besoin de 1go, donc "+1G".
  7. Après l'avoir créée, appuyer sur "a" pour la rendre bootable.
  8. En appuyant sur "p" vérifier que la partition est présente
  9. Maintenant il faut définir le type de la partition. Appuyer sur "t" pour paramétrer le type de partition, appuyer sur "c" pour "W95 FAT32 (LBA)".
  10. Appuyer sur "w" pour écrire la table de partition et quitter fdisk
  11. Il faut maintenant formater la partition
    mkfs.vfat -F 32 /dev/mmcblk0p1
  12. Il est possible de donner un nom à cette partition
    fatlabel /dev/mmcblk0 BOOT_PI2

Installation

Il faut d'abord télécharger la dernière version d'Alpine Linux. Pour le Raspberry Pi 4 il faut prendre l'architecture aarch64. Le fichier récupéré est une archive prête à être désarchivée sur une carte micro SD préalablement formatée en FAT32 et bootable.

  1. Téléchargement de la dernière version, le fichier fait environ 90 Mo (c'est pas gros)
    wget http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/aarch64/alpine-rpi-3.12.1-aarch64.tar.gz
  2. Monter la carte SD
    mount /dev/mmcblk0p1 SD
    cd SD
    
  3. Désarchiver le contenu sur la carte
    tar xvzf ../alpine-rpi-3.12.1-aarch64.tar.gz
  4. Créer le fichier usercfg.txt pour configurer les paramètres bas niveau du système. La spécification de ces paramètres est définie sur le site de Raspberry Pi
    enable_uart=1
    gpu_mem=32
    disable_overscan=1
            
  5. Démonter la carte
    umount /dev/mmcblk0

Paramètrage

Exécuter le script de paramétrage et suivre la procédure

setup-alpine

Une fois terminé mettre à jour le système

apk update
apk upgrade

Installer le système de fichier racine sur le SSD

Je vais considérer ici que le SSD correspond au périphérique /dev/sda, vérifier bien au préalable que le RAID 1 est bien sélectionné. Rester appuyé sur le bouton reset de l'Icy Box pour appliquer la sélection, attention cela détruit les données des disques.

  1. Exécuter fdisk sur le SSD
    fdisk /dev/sda
  2. Créer 2 partitions linux (cf procédure plus haut) une de 64Go l'autre prenant le restant du disque
  3. Formater les partitions créées en ext4
    mkfs.ext4 /dev/sda1
    mkfs.ext4 /dev/sda2
    
  4. Monter la première partition
    mount /dev/sda1 /mnt
  5. Monter le répetoire boot la carte dans le répertoire /mnt/boot
                mkdir /mnt/boot
                mount /media/mmcblk0p1/boot /mnt/boot
            
  6. Exécuter le script permettant de choisir le mode système sur l'emplacement voulu. Cela a pour effet de préparer (copier) la partition avec le système de fichier racine. Ignorer les messages d'alertes concernant syslinux et extlinux.
    setup-disk -m sys /mnt
  7. Remonter en écriture la partition de boot (la carte SD)
    mount -o remount,rw /media/mmcblk0p1
  8. créér le répertoire
    mkdir /mnt/media/mmcblk0p1
    
  9. Editer les points de montage dans /mnt/etc/fstab
        /dev/mmcblk0p1        /media/mmcblk0p1   vfat   defaults        0 0
        /media/mmcblk0p1/boot /boot              none   defaults,bind   0 0
    
  10. Mettre une option au démarrage du noyau pour lui donner l'emplacement du sytème de fichier racine, en rajoutant root=/dev/sda1 dans le fichier /media/mmcblk0p1/cmdline.txt
                root=/dev/sda1 modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4
            
  11. Ou recopier le contenu du fichier /media/mmcblk0p1/boot/cmdline.txt dans /media/mmcblk0p1/cmdline.txt
  12. Le système est prêt à être rebooté :-)

Après avoir installé avahi daemon et dbus requis pas ce premis, le système semble prend que 36Mo en mémoire.

pi2:~# free
            total        used        free      shared  buff/cache   available
Mem:        8003968       36168     7926596         188       41204     7876272
Swap:             0           0           0

Pour la température Du raspberry pi il a fallu que je change de boitier pour mieux refroidir celui-ci flirc. Celui-ci est un boitier en aluminium qiu refroidit le raspberry pi passivement.

La température semble correcte maintenant ~43°C, en le laissant allumé toute une nuit (sans rien faire). Malheureusement, je n'ai pas la mesure d'avant avec le boitier en plastique, mais ça devait être bien plus vue la température du boitier

pi2:~# cat /sys/class/thermal/thermal_zone0/temp
42842

Documentation des commandes apk: https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management

Installation de java

apk add openjdk8-jre

Mise à jour du du bootloader

git clone https://github.com/raspberrypi/rpi-eeprom.git
apk add raspberrypi
cd rpi-eeprom
export PATH=$PATH:/opt/vc/bin/:.
./rpi-eeprom-update -a -d

Sources

Aller plus loin

-- Laurent